ديف أوبس

كيفية تأمين خادم NGINX على أوبنتو

تأمين خادم ويب NGINX على أوبنتو 16.04

يعتبر خادم ويب NGINX واحدًا من أشهر الخوادم في مجال تقديم المواقع الإلكترونية، ويتميز بكفاءته العالية في معالجة عدد كبير من الطلبات في وقت واحد، مما يجعله الخيار المفضل للعديد من المواقع التي تتطلب أداءً عالياً. ومع ذلك، فإن تأمين هذا الخادم على أنظمة مثل أوبنتو 16.04 يعد خطوة أساسية لضمان حماية البيانات وسلامة الأداء. في هذا المقال، سنتناول كيفية تأمين خادم NGINX على أوبنتو 16.04، من خلال مجموعة من الخطوات والإعدادات التي تضمن أمان الخادم وفاعليته.

تحديث النظام

أولى الخطوات في تأمين خادم NGINX على أوبنتو 16.04 هي التأكد من أن النظام محدث بالكامل. إن تحديث النظام لا يقتصر فقط على تحسين الأداء، بل يشمل أيضاً تصحيح الثغرات الأمنية التي قد تكون موجودة في الإصدار الحالي للنظام أو البرمجيات المثبتة عليه.

تحديث النظام:

لتحديث النظام بشكل كامل، قم بتنفيذ الأوامر التالية في الطرفية:

bash
sudo apt update sudo apt upgrade sudo apt dist-upgrade sudo apt autoremove

تضمن هذه الأوامر تحديث جميع الحزم المثبتة على النظام إلى أحدث الإصدارات المتاحة.

تثبيت NGINX

إذا لم يكن NGINX مثبتًا على النظام بعد، يمكنك تثبيته باستخدام الأمر التالي:

bash
sudo apt install nginx

ستتمكن من التحقق من حالة الخادم بعد التثبيت عبر متصفحك عن طريق الوصول إلى عنوان IP الخاص بالخادم. يجب أن ترى صفحة الترحيب الخاصة بـ NGINX إذا تم التثبيت بنجاح.

تكوين الجدار الناري (Firewall)

تفعيل الجدار الناري يُعد أحد الخطوات الأساسية في تأمين الخوادم، خاصة إذا كانت متصلة بالإنترنت. في أوبنتو 16.04، يمكنك استخدام UFW (Uncomplicated Firewall) للتحكم في وصول البيانات إلى الخادم.

إعداد الجدار الناري:

أولاً، تأكد من أن UFW مثبت ومفعّل:

bash
sudo apt install ufw sudo ufw enable

ثم، قم بتمكين الوصول إلى NGINX عبر UFW. يمكنك السماح بإعدادات الوصول الآمن التي توفرها NGINX على الشكل التالي:

bash
sudo ufw allow 'Nginx HTTP' sudo ufw allow 'Nginx HTTPS'

لا تنسى التحقق من حالة الجدار الناري بعد التكوين:

bash
sudo ufw status

إعداد HTTPS باستخدام SSL/TLS

من الأمور الحيوية لتأمين خادم NGINX هو استخدام بروتوكول HTTPS. للقيام بذلك، يجب أولاً الحصول على شهادة SSL، والتي يمكن الحصول عليها مجانًا عبر خدمة مثل Let’s Encrypt.

تثبيت Certbot للحصول على شهادة SSL:

أولاً، قم بتثبيت Certbot، وهي أداة لتكوين شهادة SSL من Let’s Encrypt:

bash
sudo apt install certbot python-certbot-nginx

ثم، استخدم Certbot للحصول على شهادة SSL وتكوين NGINX لاستخدامها:

bash
sudo certbot --nginx

سيطلب منك Certbot بعض المعلومات مثل عنوان البريد الإلكتروني واسم النطاق. بمجرد اكتمال العملية، سيقوم Certbot بتحديث إعدادات NGINX تلقائيًا لاستخدام شهادة SSL.

تجديد الشهادات بشكل تلقائي:

Let’s Encrypt تقدم شهادات صالحة لمدة 90 يومًا فقط، لذا من الضروري تجديد الشهادات بانتظام. يمكنك إعداد تجديد تلقائي باستخدام Cron:

bash
sudo crontab -e

أضف السطر التالي لتجديد الشهادات تلقائيًا كل يوم:

bash
0 0 * * * certbot renew --quiet

تقوية إعدادات NGINX

من أجل تقوية أمان NGINX، من الضروري تعديل بعض الإعدادات التي يمكن أن تشكل تهديدًا للأمان. تشمل هذه الإعدادات تعطيل بعض البروتوكولات القديمة، وتعزيز التشفير، وتفعيل بعض السياسات الأمنية.

تعطيل بروتوكولات SSL القديمة:

يمكنك تعديل إعدادات NGINX لتفعيل فقط البروتوكولات الحديثة مثل TLS 1.2 و 1.3، بينما تعطيل البروتوكولات القديمة مثل SSLv2 و SSLv3.

افتح ملف إعدادات NGINX الرئيسي:

bash
sudo nano /etc/nginx/nginx.conf

أضف أو عدل السطور التالية في القسم http:

nginx
ssl_protocols TLSv1.2 TLSv1.3; ssl_prefer_server_ciphers on;

تعطيل الوصول إلى الخادم عبر HTTP:

من أجل ضمان استخدام HTTPS فقط، يمكنك فرض إعادة التوجيه من HTTP إلى HTTPS. افتح ملف تكوين الموقع:

bash
sudo nano /etc/nginx/sites-available/default

أضف التوجيه التالي:

nginx
server { listen 80; server_name example.com; return 301 https://$host$request_uri; }

تمكين HSTS (HTTP Strict Transport Security):

HSTS يساعد على حماية الخادم ضد هجمات MITM (Man-in-the-Middle). يمكنك تفعيل HSTS في NGINX بإضافة السطر التالي في قسم server داخل ملف التكوين:

nginx
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload";

حماية الخادم من الهجمات DDOS:

أحد أنواع الهجمات التي يمكن أن تواجهها الخوادم هو هجوم DDOS (توزيع الرفض للخدمة). لتقوية الخادم ضد هذا النوع من الهجمات، يمكنك تعديل إعدادات NGINX للتأكد من أن الخادم يمكنه التعامل مع عدد كبير من الطلبات في وقت قصير.

قم بتعديل ملف التكوين nginx.conf وأضف السطور التالية لتحديد الحد الأقصى للطلبات:

nginx
http { limit_conn_zone $binary_remote_addr zone=addr:10m; limit_conn addr 10; limit_req_zone $binary_remote_addr zone=mylimit:10m rate=1r/s; limit_req zone=mylimit burst=5; }

مراقبة الخادم وتسجيل الأحداث

مراقبة الخادم تعد جزءًا هامًا في تأمينه. من خلال مراقبة حركة المرور والتسجيل الدقيق للأحداث، يمكنك اكتشاف الهجمات أو الأنشطة غير المعتادة في وقت مبكر.

إعداد سجلات NGINX:

يمكنك تخصيص إعدادات السجلات في ملف التكوين nginx.conf:

nginx
log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; access_log /var/log/nginx/access.log main;

تأكد من أن لديك أدوات مراقبة مثل fail2ban لمراقبة محاولات الدخول غير المصرح بها.

تثبيت fail2ban:

Fail2ban هو أداة مهمة لحماية الخوادم ضد محاولات الدخول غير المصرح بها. لتثبيت fail2ban، استخدم الأوامر التالية:

bash
sudo apt install fail2ban

بعد التثبيت، يمكنك تعديل إعدادات fail2ban لحظر العناوين التي تحاول الوصول إلى الخادم بشكل متكرر.

تكوين fail2ban لحماية NGINX:

افتح ملف تكوين jail.local:

bash
sudo nano /etc/fail2ban/jail.local

أضف الإعدادات الخاصة بـ NGINX:

bash
[nginx-http-auth] enabled = true port = http,https filter = nginx-http-auth logpath = /var/log/nginx/error.log maxretry = 3

الحفاظ على أمان الخادم

تأمين الخادم لا يتوقف عند إجراء التعديلات الأولية فقط، بل يتطلب أيضًا اهتمامًا مستمرًا من خلال:

  • التحقق من وجود الثغرات الأمنية بشكل دوري: قم بمراجعة سجل الأمان بشكل دوري للبحث عن أي ثغرات قد تحتاج إلى تصحيح.

  • استخدام الأدوات الأمنية: مثل fail2ban و rkhunter لفحص النظام ضد البرمجيات الخبيثة.

  • النسخ الاحتياطي المنتظم: تأكد من إجراء نسخ احتياطية دورية للبيانات والملفات الهامة في حال حدوث أي مشاكل.

الخاتمة

تأمين خادم NGINX على أوبنتو 16.04 يعد خطوة أساسية في حماية موقعك أو تطبيقك من التهديدات الإلكترونية. من خلال تطبيق الإعدادات الأمنية المناسبة، مثل تحديث النظام، استخدام HTTPS، إعداد الجدار الناري، وتعزيز حماية الخادم ضد الهجمات المختلفة، يمكنك ضمان أمان الخادم واستقرار أداءه.